package com.sany.hibernate.tables;

import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * Data access object (DAO) for domain model class LogonInfo.
 * 
 * @see com.sany.hibernate.tables.LogonInfo
 * @author MyEclipse Persistence Tools
 */

public class LogonInfoDAO extends HibernateDaoSupport {
    private static final Log   log	     = LogFactory.getLog(LogonInfoDAO.class);

    // property constants
    public static final String LOGON_USER_NAME = "logonUserName";

    public static final String LOGON_IP	= "logonIp";

    protected void initDao() {
	// do nothing
    }

    public void save(LogonInfo transientInstance) {
	log.debug("saving LogonInfo instance");
	try {
	    getHibernateTemplate().save(transientInstance);
	    log.debug("save successful");
	} catch (RuntimeException re) {
	    log.error("save failed", re);
	    throw re;
	}
    }

    public void delete(LogonInfo persistentInstance) {
	log.debug("deleting LogonInfo instance");
	try {
	    getHibernateTemplate().delete(persistentInstance);
	    log.debug("delete successful");
	} catch (RuntimeException re) {
	    log.error("delete failed", re);
	    throw re;
	}
    }

    public LogonInfo findById(java.lang.Integer id) {
	log.debug("getting LogonInfo instance with id: " + id);
	try {
	    LogonInfo instance = (LogonInfo) getHibernateTemplate().get("com.sany.hibernate.tables.LogonInfo", id);
	    return instance;
	} catch (RuntimeException re) {
	    log.error("get failed", re);
	    throw re;
	}
    }

    public List findByExample(LogonInfo instance) {
	log.debug("finding LogonInfo instance by example");
	try {
	    List results = getHibernateTemplate().findByExample(instance);
	    log.debug("find by example successful, result size: " + results.size());
	    return results;
	} catch (RuntimeException re) {
	    log.error("find by example failed", re);
	    throw re;
	}
    }

    public List findByProperty(String propertyName, Object value) {
	log.debug("finding LogonInfo instance with property: " + propertyName + ", value: " + value);
	try {
	    String queryString = "from LogonInfo as model where model." + propertyName + "= ?";
	    return getHibernateTemplate().find(queryString, value);
	} catch (RuntimeException re) {
	    log.error("find by property name failed", re);
	    throw re;
	}
    }

    public List findByLogonUserName(Object logonUserName) {
	return findByProperty(LOGON_USER_NAME, logonUserName);
    }

    public List findByLogonIp(Object logonIp) {
	return findByProperty(LOGON_IP, logonIp);
    }

    public List findAll() {
	log.debug("finding all LogonInfo instances");
	try {
	    String queryString = "from LogonInfo";
	    return getHibernateTemplate().find(queryString);
	} catch (RuntimeException re) {
	    log.error("find all failed", re);
	    throw re;
	}
    }

    public LogonInfo merge(LogonInfo detachedInstance) {
	log.debug("merging LogonInfo instance");
	try {
	    LogonInfo result = (LogonInfo) getHibernateTemplate().merge(detachedInstance);
	    log.debug("merge successful");
	    return result;
	} catch (RuntimeException re) {
	    log.error("merge failed", re);
	    throw re;
	}
    }

    public void attachDirty(LogonInfo instance) {
	log.debug("attaching dirty LogonInfo instance");
	try {
	    getHibernateTemplate().saveOrUpdate(instance);
	    log.debug("attach successful");
	} catch (RuntimeException re) {
	    log.error("attach failed", re);
	    throw re;
	}
    }

    public void attachClean(LogonInfo instance) {
	log.debug("attaching clean LogonInfo instance");
	try {
	    getHibernateTemplate().lock(instance, LockMode.NONE);
	    log.debug("attach successful");
	} catch (RuntimeException re) {
	    log.error("attach failed", re);
	    throw re;
	}
    }

    public static LogonInfoDAO getFromApplicationContext(ApplicationContext ctx) {
	return (LogonInfoDAO) ctx.getBean("LogonInfoDAO");
    }
}